<!DOCTYPE html>
<style>
body {
    margin: 0;
}

#outerColumns {
    position: absolute;
    width: 332px;
    height: 200px;
    top: 220px;
    left: 300px;
    border: 1px solid black;
    columns: 3;
    column-gap: 16px;
    column-fill: auto;
    line-height: 50px;
    orphans: 1;
    widows: 1;
}

#innerColumns {
    columns: 2;
    column-gap: 0;
}
</style>

<div id="outerColumns">
    <br>
    <div id="innerColumns">
        <br>
        <br>
        <div id="outer1-inner1">first</div>
        <br>
        <div id="outer1-inner2">second</div>
        <br>
        <br>
        <div id="outer2-inner1">third</div>
        <br>
        <br>
        <div id="outer2-inner2">fourth</div>
        <br>
        <br>
        <br>
        <br>
        <br>
        <div id="outer3-inner1">fifth</div>
        <br>
        <br>
        <br>
        <br>
        <div id="outer3-inner2">sixth</div>
    </div>
</div>

<script src="../../resources/js-test.js"></script>
<script>
description("Dispatch mouse click events in each column and check the result.");

function dispatchEvent(clientX, clientY, expectedElementID, expectedOffsetX, expectedOffsetY) {
    var e = document.createEvent("MouseEvent");
    e.initMouseEvent("click", true, true, window, 1, 1, 1, clientX, clientY, false, false, false, false, 0, document);
    e.expectedElementID = expectedElementID;
    e.expectedOffsetX = expectedOffsetX;
    e.expectedOffsetY = expectedOffsetY;
    var target = document.elementFromPoint(e.clientX, e.clientY);
    target.dispatchEvent(e);
}

onclick = function(event) {
    if (!event.expectedElementID)
	return;
    shouldBe("event.target.id", "event.expectedElementID");
    shouldBe("event.offsetX", "event.expectedOffsetX");
    shouldBe("event.offsetY", "event.expectedOffsetY");
}

window.onload = function() {
    dispatchEvent(330, 415, "outer1-inner1", 29, 44);
    dispatchEvent(380, 365, "outer1-inner2", 29, 44);
    dispatchEvent(446, 315, "outer2-inner1", 29, 44);
    dispatchEvent(496, 265, "outer2-inner2", 29, 44);
    dispatchEvent(562, 365, "outer3-inner1", 29, 44);
    dispatchEvent(612, 415, "outer3-inner2", 29, 44);
}
</script>
